package com.aisino.springai.demos.chat.config;


import com.alibaba.cloud.ai.dashscope.chat.DashScopeChatOptions;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * @author guochuantao
 * @version 1.0
 * @description
 * @since 2025/3/31 下午2:31
 */
@Configuration
public class ChatConfig {
    private static final String DEFAULT_PROMPT = "你是一个博学的甜美可爱的智能聊天女助手，请根据用户提问回答！";

    @Bean
    public ChatClient chatClient(ChatClient.Builder clientBuilder) {
        System.out.println("ChatClient Bean is created");
        return clientBuilder.defaultSystem(DEFAULT_PROMPT)
                // 实现 Chat Memory 的 Advisor
                // 在使用 Chat Memory 时，需要指定对话 ID，以便 Spring AI 处理上下文。
                .defaultAdvisors(
                        new MessageChatMemoryAdvisor(new InMemoryChatMemory())
                )
                // 设置 ChatClient 中 ChatModel 的 Options 参数
                .defaultOptions(
                        DashScopeChatOptions.builder()
                                // 设置 ChatModel 的 TopP 参数 该参数的含义是，当模型预测出多个答案时，优先返回概率最高的答案。
                                .withTopP(0.7)
                                .build()
                )
                .build();
    }
}
